package com.weimin.SportAppBackend.service;

import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.service.IService;
import com.weimin.SportAppBackend.entity.User;
import com.weimin.SportAppBackend.entity.dto.UserQueryDTO;
import com.weimin.SportAppBackend.entity.dto.UserStatusDTO;
import com.weimin.SportAppBackend.entity.vo.LoginVO;

/**
* @author huimin
* @description 针对表【users】的数据库操作Service
* @createDate 2025-08-15 12:07:05
*/
public interface UserService extends IService<User> {
    /**
     * 微信登录业务逻辑
     * 根据微信code获取openid，然后判断用户是否存在。
     * 如果存在则直接登录并返回用户信息和JWT Token。
     * 如果不存在则注册新用户（随机昵称，保存openid），然后登录并返回用户信息和JWT Token。
     * @param code 微信小程序登录凭证
     * @return 包含JWT Token和用户信息的响应DTO
     */
    LoginVO wechatLogin(String code);


    /**
     * 根据OpenID查询用户
     * @param openid 微信OpenID
     * @return 用户对象
     */
    User findUserByOpenid(String openid); // 新增公共方法

    /**
     * 获取微信openid
     * @param code
     * @return
     */
    String getOpenid(String code);




    /**
     * 绑定手机号
     * @param userId 用户ID
     * @param phone 手机号
     * @param code 验证码
     * @return 绑定结果
     */
    boolean bindPhone(Integer userId, String phone, String code);

    /**
     * 手机号登录注册
     * @param phone 手机号
     * @param code 验证码
     * @param password 密码（注册时使用）
     * @return 登录结果
     */
    LoginVO phoneLogin(String phone, String code, String password);

    /**
     * 根据手机号查询用户
     * @param phone 手机号
     * @return 用户对象
     */
    User findUserByPhone(String phone);

    /**
     * 查询用户列表
     * @param queryDTO 查询条件
     * @return 分页用户列表
     */
    IPage<User> getUserList(UserQueryDTO queryDTO);

    /**
     * 修改用户状态
     * @param statusDTO 状态修改信息
     * @return 修改结果
     */
    boolean updateUserStatus(UserStatusDTO statusDTO);

    /**
     * 删除用户（逻辑删除）
     * @param id 用户ID
     * @return 删除结果
     */
    boolean deleteUser(Integer id);


}
